print("hello python")
a = 2
b = 3
if a>b:
    print("a max")
else:
    print("b max")

for s in "hello":
    print(s)

for i in range(5):
    print(i)
print()
# 列表
lists = [1,2,3,'a',5]
print(lists[2])
# 元组
tup1=('a','b',3,4)
tup2=(1,2,3)
print(tup1[0])
print(tup2[0:2]) # 代表[0,2)左闭右开
# 连接元组
tup3 = tup1+tup2
print(tup3)
# 复制元组
tup4=("Hi")
print(tup4*3)
# 列表是可变的（可追加，可修改，可删除），元组是不可变的

# 字典
# {"key":"value",...}
dicts = {"username":"zhangsan","password":123456}
# 打印字典中的所有key
print(dicts.keys())
# 打印字典中的所有value
print(dicts.values())

# 向字典中添加键值对
dicts["age"]=22
# 打印字典中的所有key
print(dicts.keys())
# 打印字典中的所有value
print(dicts.values())

# 循环打印
for k,v in dicts.items():
    print("dicts keys is %r " %k)
    print("dicts values is %r " %v)

# 删除键是password的项
dicts.pop("password")
# 打印字典以列表形式返回
print(dicts.items())

# python 规定一个字典中的key必须独一无二，value可以相同

# 函数(关键字 def)
'''
创建一个add(a,b)函数
'''
def add(a,b):
    return a+b

c = add(3,5)
print(c)

print(add(4,5))

# 类和方法
# 类（关键字 class）

# 定义类
# 定义MyClass类
class MyClass(object):
    def say_hello(self,name):
        return "hello,"+name
# 调用MyClass类
mc = MyClass()
print(mc.say_hello("jubai"))

# 方法的关键字为def
# 方法的第一个参数必须声明，一般为self
# 一般在创建类时会声明初始化方法__init__()

class A:
    def __init__(self,a,b):
        self.a = int(a)
        self.b = int(b)

    def add(self):
        return self.a + self.b

# 调用类时需要传入初始化参数
count = A('4',5)
print(count.add())

# 当调用A类时，会执行__init__()方法，所以需要给他传参数
# 初始化方法会将输入的参数转化为整型，保证程序的容错性

# 创建B类继承A类
class B(A):
    def sub(self,a,b):
        return a-b

print(B(2,3).add())
# B继承A，可以直接通过B类调用add方法






